package com.ft.core.runtime.session;

/**
 * @copyright (C), 2015-2019, XXX有限公司
 * @fileName: IAuthUser
 * @author: 李阳
 * @date: 2019/7/1 0:20
 * @description: 授权用户接口
 * @history: <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
public interface IAuthUser {

    /**
     * 用户Id
     *
     * @return
     */
    Long getId();

    /**
     * 租户Id
     *
     * @return 租户Id
     */
    Long getTenantId();

    /**
     * 公司Id
     *
     * @return
     */
    Long getCompanyId();

    /**
     * 部门Id
     *
     * @return
     */
    Long getDeptId();

    /**
     * 用户类型
     *
     * @return
     */
    Integer getUserType();

    /**
     * 用户名
     *
     * @return 用户名
     */
    String getUserName();

    /**
     * 密码
     *
     * @return 密码
     */
    String getPassword();

    /**
     * 权限标识集合
     */
    String[] getPermissions();

    /**
     * 角色集合
     */
    String[] getRoles();

    /**
     * 账户是否未过期
     *
     * @return 账户是否未过期
     */
    boolean isAccountNonExpired();

    /**
     * 账户是否未锁定
     *
     * @return 账户是否未锁定
     */
    boolean isAccountNonLocked();

    /**
     * 凭据是否未过期
     *
     * @return 凭据是否未过期
     */
    boolean isCredentialsNonExpired();

    /**
     * 是否启用该用户
     *
     * @return 是否启用该用户
     */
    boolean isEnabled();

    /**
     * 是否为租户管理员
     *
     * @return
     */
    default Boolean isTenantAdmin() {
        return getUserType().equals(3);
    }
}
